package cn.edu.hnu.gpg.service;

import cn.edu.hnu.gpg.entity.Student;
import cn.edu.hnu.gpg.entity.Supervision;
import cn.edu.hnu.gpg.entity.Teacher;
import cn.edu.hnu.gpg.entity.User;

import java.util.List;

public interface SupervisionService {



    /**
     * 学生选择导师----createSupervision方法的重写，将用于保持本人此次登录的user对象传入，从而进行选择导师（学生用户使用）
     * @param user 学生用户session里面记录的user对象
     * @param teacher_no 教师的工号
     * @return 是否创建成功
     */
    boolean createSupervision(User user,String teacher_no);

    /**
     *用于修改指导教师与学生的毕设指导关系记录
     * @param student_no 学生的id
     * @param teacher_no 教师的id
     * @return 修改是否成功
     */
    boolean modifSupervision(int student_no,int teacher_no);

    /**
     * 删除某个不存在的毕设指导关系记录(由于学生只能有一个导师，所以只需通过主键student_id删除记录即可)
     * @param student_id 学生的学号
     * @return 修改是否成功
     */
    boolean deleteSupervision(int student_id);

    /**
     * 通过学生来获得对应的教师
     * @param student 学生对象
     * @return 学生的指导老师的id
     */
    int findTeacherByStudent(Student student);

    /**
     * 通过教师对象来获得所有的指导关系
     * @param teacher 教师对象
     * @return 教师负责的所有指导关系
     */
    List<Supervision> findSupervisionByTeacherId(Teacher teacher);

    /**
     * 获得某个教师指导的所有学生的student_id的集合
     * @param teacher 教师对象
     * @return 该教师指导的所有的学生ID的集合
     */
    List<Integer> findStudentIdByTeacher(Teacher teacher);
}
